home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / gaim / value.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  11KB  |  488 lines

  1. /**
  2.  * @file value.h Value wrapper API
  3.  * @ingroup core
  4.  *
  5.  * gaim
  6.  *
  7.  * Gaim is the legal property of its developers, whose names are too numerous
  8.  * to list here.  Please refer to the COPYRIGHT file distributed with this
  9.  * source distribution.
  10.  *
  11.  * This program is free software; you can redistribute it and/or modify
  12.  * it under the terms of the GNU General Public License as published by
  13.  * the Free Software Foundation; either version 2 of the License, or
  14.  * (at your option) any later version.
  15.  *
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  *
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  24.  */
  25. #ifndef _GAIM_VALUE_H_
  26. #define _GAIM_VALUE_H_
  27.  
  28. #include <glib.h>
  29.  
  30. /**
  31.  * Specific value types.
  32.  */
  33. typedef enum
  34. {
  35.     GAIM_TYPE_UNKNOWN = 0,  /**< Unknown type.                     */
  36.     GAIM_TYPE_SUBTYPE,      /**< Subtype.                          */
  37.     GAIM_TYPE_CHAR,         /**< Character.                        */
  38.     GAIM_TYPE_UCHAR,        /**< Unsigned character.               */
  39.     GAIM_TYPE_BOOLEAN,      /**< Boolean.                          */
  40.     GAIM_TYPE_SHORT,        /**< Short integer.                    */
  41.     GAIM_TYPE_USHORT,       /**< Unsigned short integer.           */
  42.     GAIM_TYPE_INT,          /**< Integer.                          */
  43.     GAIM_TYPE_UINT,         /**< Unsigned integer.                 */
  44.     GAIM_TYPE_LONG,         /**< Long integer.                     */
  45.     GAIM_TYPE_ULONG,        /**< Unsigned long integer.            */
  46.     GAIM_TYPE_INT64,        /**< 64-bit integer.                   */
  47.     GAIM_TYPE_UINT64,       /**< 64-bit unsigned integer.          */
  48.     GAIM_TYPE_STRING,       /**< String.                           */
  49.     GAIM_TYPE_OBJECT,       /**< Object pointer.                   */
  50.     GAIM_TYPE_POINTER,      /**< Generic pointer.                  */
  51.     GAIM_TYPE_ENUM,         /**< Enum.                             */
  52.     GAIM_TYPE_BOXED         /**< Boxed pointer with specific type. */
  53.  
  54. } GaimType;
  55.  
  56. /**
  57.  * Gaim-specific subtype values.
  58.  */
  59. typedef enum
  60. {
  61.     GAIM_SUBTYPE_UNKNOWN = 0,
  62.     GAIM_SUBTYPE_ACCOUNT,
  63.     GAIM_SUBTYPE_BLIST,
  64.     GAIM_SUBTYPE_BLIST_BUDDY,
  65.     GAIM_SUBTYPE_BLIST_GROUP,
  66.     GAIM_SUBTYPE_BLIST_CHAT,
  67.     GAIM_SUBTYPE_CONNECTION,
  68.     GAIM_SUBTYPE_CONVERSATION,
  69.     GAIM_SUBTYPE_CONV_WINDOW,
  70.     GAIM_SUBTYPE_PLUGIN,
  71.     GAIM_SUBTYPE_BLIST_NODE,
  72.     GAIM_SUBTYPE_BUDDY_ICON
  73.  
  74. } GaimSubType;
  75.  
  76. /**
  77.  * A wrapper for a type, subtype, and specific type of value.
  78.  */
  79. typedef struct
  80. {
  81.     GaimType type;
  82.     unsigned short flags;
  83.  
  84.     union
  85.     {
  86.         char char_data;
  87.         unsigned char uchar_data;
  88.         gboolean boolean_data;
  89.         short short_data;
  90.         unsigned short ushort_data;
  91.         int int_data;
  92.         unsigned int uint_data;
  93.         long long_data;
  94.         unsigned long ulong_data;
  95.         gint64 int64_data;
  96.         guint64 uint64_data;
  97.         char *string_data;
  98.         void *object_data;
  99.         void *pointer_data;
  100.         int enum_data;
  101.         void *boxed_data;
  102.  
  103.     } data;
  104.  
  105.     union
  106.     {
  107.         unsigned int subtype;
  108.         char *specific_type;
  109.  
  110.     } u;
  111.  
  112. } GaimValue;
  113.  
  114. #ifdef __cplusplus
  115. extern "C" {
  116. #endif
  117.  
  118. /**
  119.  * Creates a new GaimValue.
  120.  *
  121.  * This function takes a type and, depending on that type, a sub-type
  122.  * or specific type.
  123.  *
  124.  * If @a type is GAIM_TYPE_POINTER, the next parameter must be a
  125.  * string representing the specific type.
  126.  *
  127.  * If @a type is GAIM_TYPE_SUBTYPE, the next parameter must be a
  128.  * integer or enum representing the sub-type.
  129.  *
  130.  * If the subtype or specific type is not set when required, random
  131.  * errors may occur. You have been warned.
  132.  *
  133.  * @param type The type.
  134.  *
  135.  * @return The new value.
  136.  */
  137. GaimValue *gaim_value_new(GaimType type, ...);
  138.  
  139. /**
  140.  * Creates a new outgoing GaimValue.
  141.  *
  142.  * This function takes a type and, depending on that type, a sub-type
  143.  * or specific type.
  144.  *
  145.  * If @a type is GAIM_TYPE_POINTER, the next parameter must be a
  146.  * string representing the specific type.
  147.  *
  148.  * If @a type is GAIM_TYPE_SUBTYPE, the next parameter must be a
  149.  * integer or enum representing the sub-type.
  150.  *
  151.  * If the sub-type or specific type is not set when required, random
  152.  * errors may occur. You have been warned.
  153.  *
  154.  * @param type The type.
  155.  *
  156.  * @return The new value.
  157.  */
  158. GaimValue *gaim_value_new_outgoing(GaimType type, ...);
  159.  
  160. /**
  161.  * Destroys a GaimValue.
  162.  *
  163.  * @param value The value to destroy.
  164.  */
  165. void gaim_value_destroy(GaimValue *value);
  166.  
  167. /**
  168.  * Duplicated a GaimValue.
  169.  *
  170.  * @param value The value to duplicate.
  171.  *
  172.  * @return The duplicate value.
  173.  */
  174. GaimValue *gaim_value_dup(const GaimValue *value);
  175.  
  176. /**
  177.  * Returns a value's type.
  178.  *
  179.  * @return The value's type.
  180.  */
  181. GaimType gaim_value_get_type(const GaimValue *value);
  182.  
  183. /**
  184.  * Returns a value's subtype.
  185.  *
  186.  * If the value's type is not GAIM_TYPE_SUBTYPE, this will return 0.
  187.  * Subtypes should never have a subtype of 0.
  188.  *
  189.  * @return The value's subtype, or 0 if @a type is not GAIM_TYPE_SUBTYPE.
  190.  */
  191. unsigned int gaim_value_get_subtype(const GaimValue *value);
  192.  
  193. /**
  194.  * Returns a value's specific type.
  195.  *
  196.  * If the value's type is not GAIM_TYPE_BOXED, this will return @c NULL.
  197.  *
  198.  * @return The value's specific type, or @a NULL if not GAIM_TYPE_BOXED.
  199.  */
  200. const char *gaim_value_get_specific_type(const GaimValue *value);
  201.  
  202. /**
  203.  * Returns whether or not the value is an outgoing value.
  204.  *
  205.  * @param value The value.
  206.  *
  207.  * @return TRUE if the value is outgoing, or FALSE otherwise.
  208.  */
  209. gboolean gaim_value_is_outgoing(const GaimValue *value);
  210.  
  211. /**
  212.  * Sets the value's character data.
  213.  *
  214.  * @param value The value.
  215.  * @param data The character data.
  216.  */
  217. void gaim_value_set_char(GaimValue *value, char data);
  218.  
  219. /**
  220.  * Sets the value's unsigned character data.
  221.  *
  222.  * @param value The value.
  223.  * @param data The unsigned character data.
  224.  */
  225. void gaim_value_set_uchar(GaimValue *value, unsigned char data);
  226.  
  227. /**
  228.  * Sets the value's boolean data.
  229.  *
  230.  * @param value The value.
  231.  * @param data The boolean data.
  232.  */
  233. void gaim_value_set_boolean(GaimValue *value, gboolean data);
  234.  
  235. /**
  236.  * Sets the value's short integer data.
  237.  *
  238.  * @param value The value.
  239.  * @param data The short integer data.
  240.  */
  241. void gaim_value_set_short(GaimValue *value, short data);
  242.  
  243. /**
  244.  * Sets the value's unsigned short integer data.
  245.  *
  246.  * @param value The value.
  247.  * @param data The unsigned short integer data.
  248.  */
  249. void gaim_value_set_ushort(GaimValue *value, unsigned short data);
  250.  
  251. /**
  252.  * Sets the value's integer data.
  253.  *
  254.  * @param value The value.
  255.  * @param data The integer data.
  256.  */
  257. void gaim_value_set_int(GaimValue *value, int data);
  258.  
  259. /**
  260.  * Sets the value's unsigned integer data.
  261.  *
  262.  * @param value The value.
  263.  * @param data The unsigned integer data.
  264.  */
  265. void gaim_value_set_uint(GaimValue *value, unsigned int data);
  266.  
  267. /**
  268.  * Sets the value's long integer data.
  269.  *
  270.  * @param value The value.
  271.  * @param data The long integer data.
  272.  */
  273. void gaim_value_set_long(GaimValue *value, long data);
  274.  
  275. /**
  276.  * Sets the value's unsigned long integer data.
  277.  *
  278.  * @param value The value.
  279.  * @param data The unsigned long integer data.
  280.  */
  281. void gaim_value_set_ulong(GaimValue *value, unsigned long data);
  282.  
  283. /**
  284.  * Sets the value's 64-bit integer data.
  285.  *
  286.  * @param value The value.
  287.  * @param data The 64-bit integer data.
  288.  */
  289. void gaim_value_set_int64(GaimValue *value, gint64 data);
  290.  
  291. /**
  292.  * Sets the value's unsigned 64-bit integer data.
  293.  *
  294.  * @param value The value.
  295.  * @param data The unsigned 64-bit integer data.
  296.  */
  297. void gaim_value_set_uint64(GaimValue *value, guint64 data);
  298.  
  299. /**
  300.  * Sets the value's string data.
  301.  *
  302.  * @param value The value.
  303.  * @param data The string data.
  304.  */
  305. void gaim_value_set_string(GaimValue *value, const char *data);
  306.  
  307. /**
  308.  * Sets the value's object data.
  309.  *
  310.  * @param value The value.
  311.  * @param data The object data.
  312.  */
  313. void gaim_value_set_object(GaimValue *value, void *data);
  314.  
  315. /**
  316.  * Sets the value's pointer data.
  317.  *
  318.  * @param value The value.
  319.  * @param data The pointer data.
  320.  */
  321. void gaim_value_set_pointer(GaimValue *value, void *data);
  322.  
  323. /**
  324.  * Sets the value's enum data.
  325.  *
  326.  * @param value The value.
  327.  * @param data The enum data.
  328.  */
  329. void gaim_value_set_enum(GaimValue *value, int data);
  330.  
  331. /**
  332.  * Sets the value's boxed data.
  333.  *
  334.  * @param value The value.
  335.  * @param data The boxed data.
  336.  */
  337. void gaim_value_set_boxed(GaimValue *value, void *data);
  338.  
  339. /**
  340.  * Returns the value's character data.
  341.  *
  342.  * @param value The value.
  343.  *
  344.  * @return The character data.
  345.  */
  346. char gaim_value_get_char(const GaimValue *value);
  347.  
  348. /**
  349.  * Returns the value's unsigned character data.
  350.  *
  351.  * @param value The value.
  352.  *
  353.  * @return The unsigned character data.
  354.  */
  355. unsigned char gaim_value_get_uchar(const GaimValue *value);
  356.  
  357. /**
  358.  * Returns the value's boolean data.
  359.  *
  360.  * @param value The value.
  361.  *
  362.  * @return The boolean data.
  363.  */
  364. gboolean gaim_value_get_boolean(const GaimValue *value);
  365.  
  366. /**
  367.  * Returns the value's short integer data.
  368.  *
  369.  * @param value The value.
  370.  *
  371.  * @return The short integer data.
  372.  */
  373. short gaim_value_get_short(const GaimValue *value);
  374.  
  375. /**
  376.  * Returns the value's unsigned short integer data.
  377.  *
  378.  * @param value The value.
  379.  *
  380.  * @return The unsigned short integer data.
  381.  */
  382. unsigned short gaim_value_get_ushort(const GaimValue *value);
  383.  
  384. /**
  385.  * Returns the value's integer data.
  386.  *
  387.  * @param value The value.
  388.  *
  389.  * @return The integer data.
  390.  */
  391. int gaim_value_get_int(const GaimValue *value);
  392.  
  393. /**
  394.  * Returns the value's unsigned integer data.
  395.  *
  396.  * @param value The value.
  397.  *
  398.  * @return The unsigned integer data.
  399.  */
  400. unsigned int gaim_value_get_uint(const GaimValue *value);
  401.  
  402. /**
  403.  * Returns the value's long integer data.
  404.  *
  405.  * @param value The value.
  406.  *
  407.  * @return The long integer data.
  408.  */
  409. long gaim_value_get_long(const GaimValue *value);
  410.  
  411. /**
  412.  * Returns the value's unsigned long integer data.
  413.  *
  414.  * @param value The value.
  415.  *
  416.  * @return The unsigned long integer data.
  417.  */
  418. unsigned long gaim_value_get_ulong(const GaimValue *value);
  419.  
  420. /**
  421.  * Returns the value's 64-bit integer data.
  422.  *
  423.  * @param value The value.
  424.  *
  425.  * @return The 64-bit integer data.
  426.  */
  427. gint64 gaim_value_get_int64(const GaimValue *value);
  428.  
  429. /**
  430.  * Returns the value's unsigned 64-bit integer data.
  431.  *
  432.  * @param value The value.
  433.  *
  434.  * @return The unsigned 64-bit integer data.
  435.  */
  436. guint64 gaim_value_get_uint64(const GaimValue *value);
  437.  
  438. /**
  439.  * Returns the value's string data.
  440.  *
  441.  * @param value The value.
  442.  *
  443.  * @return The string data.
  444.  */
  445. const char *gaim_value_get_string(const GaimValue *value);
  446.  
  447. /**
  448.  * Returns the value's object data.
  449.  *
  450.  * @param value The value.
  451.  *
  452.  * @return The object data.
  453.  */
  454. void *gaim_value_get_object(const GaimValue *value);
  455.  
  456. /**
  457.  * Returns the value's pointer data.
  458.  *
  459.  * @param value The value.
  460.  *
  461.  * @return The pointer data.
  462.  */
  463. void *gaim_value_get_pointer(const GaimValue *value);
  464.  
  465. /**
  466.  * Returns the value's enum data.
  467.  *
  468.  * @param value The value.
  469.  *
  470.  * @return The enum data.
  471.  */
  472. int gaim_value_get_enum(const GaimValue *value);
  473.  
  474. /**
  475.  * Returns the value's boxed data.
  476.  *
  477.  * @param value The value.
  478.  *
  479.  * @return The boxed data.
  480.  */
  481. void *gaim_value_get_boxed(const GaimValue *value);
  482.  
  483. #ifdef __cplusplus
  484. }
  485. #endif
  486.  
  487. #endif /* _GAIM_VALUE_H_ */
  488.